package br.ufes.ceunes.poo.model.dao;

import br.ufes.ceunes.poo.model.pojo.Fornecedor;
import br.ufes.ceunes.poo.model.pojo.Pedido;
import br.ufes.ceunes.poo.util.JPAUtil;
import java.io.Serializable;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;

public class PedidoDAO implements DAOGenerico<Pedido, Integer> {

    @Override
    public void salvar(Pedido objeto) {
        EntityManager em = JPAUtil.getInstance().getEntityManager();
        EntityTransaction tx = JPAUtil.getInstance().getTransaction(em);
        em.merge(objeto);

        em.flush();
        tx.commit();
    }

    @Override
    public void remover(Pedido objeto) {
        EntityManager em = JPAUtil.getInstance().getEntityManager();
        EntityTransaction tx = JPAUtil.getInstance().getTransaction(em);
        em.remove(objeto);
        tx.commit();
        em.close();
    }

    @Override
    public List<Pedido> listar() {
        EntityManager em = JPAUtil.getInstance().getEntityManager();
        Query query = em.createQuery("select p from Pedidos p", Pedido.class);
        return query.getResultList();
    }

    @Override
    public Pedido buscarPorId(Integer id) {
        EntityManager em = JPAUtil.getInstance().getEntityManager();
        return em.find(Pedido.class, id);
    }

    public List<Pedido> buscarPedidosEmAberto() {
        EntityManager em = JPAUtil.getInstance().getEntityManager();
        Query query = em.createQuery("select pedido from Pedido pedido"
                + " where pedido.vendaPaga like False");
        return query.getResultList();
    }

}
